<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  

  
  <title>前后端并行开发--前端模拟数据 | 停不下的维尼猫</title>
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  <meta name="description" content="由于公司慢慢将前后端分离开来，前后端的开发也趋于并行。虽然服务端开始写接口时，前端可以先画静态页，然后以两三天的时间差进行接口联调，但仍然会由于服务端人手不够或静态页绘制比较快等造成“等待”接口的情况出现。在前期约定好接口格式及字段的前提下，通常最先想到的就是本地json文件。手写json字符串并且将.json文件通过相对路径设置请求访问。数据量一大，有图片或者数据结构很复杂，写json文件简直是">
<meta name="keywords" content="mock.js mock服务">
<meta property="og:type" content="article">
<meta property="og:title" content="前后端并行开发--前端模拟数据">
<meta property="og:url" content="http://winnicat.gitee.io/myblog/2018/03/19/前后端并行开发-前端模拟数据/index.html">
<meta property="og:site_name" content="停不下的维尼猫">
<meta property="og:description" content="由于公司慢慢将前后端分离开来，前后端的开发也趋于并行。虽然服务端开始写接口时，前端可以先画静态页，然后以两三天的时间差进行接口联调，但仍然会由于服务端人手不够或静态页绘制比较快等造成“等待”接口的情况出现。在前期约定好接口格式及字段的前提下，通常最先想到的就是本地json文件。手写json字符串并且将.json文件通过相对路径设置请求访问。数据量一大，有图片或者数据结构很复杂，写json文件简直是">
<meta property="og:updated_time" content="2018-03-19T10:18:10.473Z">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="前后端并行开发--前端模拟数据">
<meta name="twitter:description" content="由于公司慢慢将前后端分离开来，前后端的开发也趋于并行。虽然服务端开始写接口时，前端可以先画静态页，然后以两三天的时间差进行接口联调，但仍然会由于服务端人手不够或静态页绘制比较快等造成“等待”接口的情况出现。在前期约定好接口格式及字段的前提下，通常最先想到的就是本地json文件。手写json字符串并且将.json文件通过相对路径设置请求访问。数据量一大，有图片或者数据结构很复杂，写json文件简直是">
  
    <link rel="alternate" href="/myblog/atom.xml" title="停不下的维尼猫" type="application/atom+xml">
  
  
    <link rel="icon" href="/favicon.png">
  
  
    <link href="//fonts.googleapis.com/css?family=Source+Code+Pro" rel="stylesheet" type="text/css">
  
  <link rel="stylesheet" href="/myblog/css/style.css">
</head>

<body>
  <div id="container">
    <div id="wrap">
      <header id="header">
  <div id="banner"></div>
  <div id="header-outer" class="outer">
    <div id="header-title" class="inner">
      <h1 id="logo-wrap">
        <a href="/myblog/" id="logo">停不下的维尼猫</a>
      </h1>
      
        <h2 id="subtitle-wrap">
          <a href="/myblog/" id="subtitle">前端轮子们 学习总结、使用心得、小技巧</a>
        </h2>
      
    </div>
    <div id="header-inner" class="inner">
      <nav id="main-nav">
        <a id="main-nav-toggle" class="nav-icon"></a>
        
          <a class="main-nav-link" href="/myblog/">Home</a>
        
          <a class="main-nav-link" href="/myblog/archives">Archives</a>
        
      </nav>
      <nav id="sub-nav">
        
          <a id="nav-rss-link" class="nav-icon" href="/myblog/atom.xml" title="RSS Feed"></a>
        
        <a id="nav-search-btn" class="nav-icon" title="Suche"></a>
      </nav>
      <div id="search-form-wrap">
        <form action="//google.com/search" method="get" accept-charset="UTF-8" class="search-form"><input type="search" name="q" class="search-form-input" placeholder="Search"><button type="submit" class="search-form-submit">&#xF002;</button><input type="hidden" name="sitesearch" value="http://winnicat.gitee.io/myblog"></form>
      </div>
    </div>
  </div>
</header>
      <div class="outer">
        <section id="main"><article id="post-前后端并行开发-前端模拟数据" class="article article-type-post" itemscope itemprop="blogPost">
  <div class="article-meta">
    <a href="/myblog/2018/03/19/前后端并行开发-前端模拟数据/" class="article-date">
  <time datetime="2018-03-19T07:43:34.000Z" itemprop="datePublished">2018-03-19</time>
</a>
    
  </div>
  <div class="article-inner">
    
    
      <header class="article-header">
        
  
    <h1 class="article-title" itemprop="name">
      前后端并行开发--前端模拟数据
    </h1>
  

      </header>
    
    <div class="article-entry" itemprop="articleBody">
      
        <p>由于公司慢慢将前后端分离开来，前后端的开发也趋于并行。虽然服务端开始写接口时，前端可以先画静态页，然后以两三天的时间差进行接口联调，但仍然会由于服务端人手不够或静态页绘制比较快等造成“等待”接口的情况出现。在前期约定好接口格式及字段的前提下，通常最先想到的就是<em>本地json文件</em>。<br>手写json字符串并且将.json文件通过相对路径设置请求访问。数据量一大，有图片或者数据结构很复杂，写json文件简直是噩梦。<br>如果我只需要简单的配置就能自动生成我所需要的格式的.json文件该多好，搜了一下圈子里的大神们早就开发出了功能比我想象的更强大的工具，本地启Mock服务。</p>
<h2 id="Mock-js-上手demo"><a href="#Mock-js-上手demo" class="headerlink" title="Mock.js 上手demo"></a>Mock.js 上手demo</h2><p>跟着官网先玩个小demo。</p>
<ol>
<li><p>本地用的node，先装npm包</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install mockjs</span><br></pre></td></tr></table></figure>
</li>
<li><p>新建一个mockdemo.js</p>
</li>
<li><p>把官网的小demo抄进去</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">var Mock = require(&apos;mockjs&apos;)</span><br><span class="line"></span><br><span class="line">var data = Mock.mock(&#123;</span><br><span class="line">  &apos;list|1-10&apos;:[&#123;</span><br><span class="line">    &apos;id|+1&apos;: 1</span><br><span class="line">  &#125;]</span><br><span class="line">&#125;)</span><br><span class="line"></span><br><span class="line">console.log(JSON.stringify(data, null, 4))</span><br></pre></td></tr></table></figure>
</li>
<li><p>命令行 <code>node mockdemo.js</code>执行查看结果</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">&#123;</span><br><span class="line">  &quot;list&quot;: [</span><br><span class="line">      &#123;</span><br><span class="line">          &quot;id&quot;: 1</span><br><span class="line">      &#125;,</span><br><span class="line">      &#123;</span><br><span class="line">          &quot;id&quot;: 2</span><br><span class="line">      &#125;</span><br><span class="line">  ]</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>
<p>输出的有2个元素的对象数组，感觉可能有点问题。忽略，至少有东西输出了，还是蛮神奇的，迈出了从0-1的第一步。</p>
</li>
</ol>
<h3 id="Mock-mock"><a href="#Mock-mock" class="headerlink" title="Mock.mock()"></a>Mock.mock()</h3><p>既然demo里用到了这个方法，而且方法名就是它自己[mock|模拟]，肯定很重要，当然第一个就要研究下这个家伙的用法</p>
<p><code>Mock.mock( rurl?, rtype?, template|function( options ) )</code></p>
<p>顾名思义，这个方法就是最重要用来生成模板的方法。</p>
<p>template|function(options): 必传的是第三个参数，可直接传入模板，也可通过函数将执行结果作为响应数据返回。</p>
<p>options: 指向本次请求的Ajax选项集, 含有url、type和body三个属性（从 1.0 开始，Mock.js 通过覆盖和模拟原生 XMLHttpRequest 的行为来拦截 Ajax 请求，不再依赖于第三方 Ajax 工具库（例如 jQuery、Zepto 等）。）</p>
<p>rurl: 匹配需要拦截的URL地址， 支持正则</p>
<p>rtype: 匹配需要拦截的Ajax请求类型， 如get、post、put、delete</p>

      
    </div>
    <footer class="article-footer">
      <a data-url="http://winnicat.gitee.io/myblog/2018/03/19/前后端并行开发-前端模拟数据/" data-id="cjey05jlh00029368dpgyy1ed" class="article-share-link">Teilen</a>
      
      
  <ul class="article-tag-list"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/myblog/tags/mock-js-mock服务/">mock.js mock服务</a></li></ul>

    </footer>
  </div>
  
    
<nav id="article-nav">
  
  
    <a href="/myblog/2018/03/06/hexo-gitee（码云）搭建我的第一个静态博客/" id="article-nav-older" class="article-nav-link-wrap">
      <strong class="article-nav-caption">Älter</strong>
      <div class="article-nav-title">hexo+gitee（码云）搭建我的第一个静态博客</div>
    </a>
  
</nav>

  
</article>

</section>
        
          <aside id="sidebar">
  
    

  
    
  <div class="widget-wrap">
    <h3 class="widget-title">Tags</h3>
    <div class="widget">
      <ul class="tag-list"><li class="tag-list-item"><a class="tag-list-link" href="/myblog/tags/mock-js-mock服务/">mock.js mock服务</a></li><li class="tag-list-item"><a class="tag-list-link" href="/myblog/tags/搭建/">搭建</a></li></ul>
    </div>
  </div>


  
    
  <div class="widget-wrap">
    <h3 class="widget-title">Tag Cloud</h3>
    <div class="widget tagcloud">
      <a href="/myblog/tags/mock-js-mock服务/" style="font-size: 10px;">mock.js mock服务</a> <a href="/myblog/tags/搭建/" style="font-size: 10px;">搭建</a>
    </div>
  </div>

  
    
  <div class="widget-wrap">
    <h3 class="widget-title">Archiv</h3>
    <div class="widget">
      <ul class="archive-list"><li class="archive-list-item"><a class="archive-list-link" href="/myblog/archives/2018/03/">March 2018</a></li></ul>
    </div>
  </div>


  
    
  <div class="widget-wrap">
    <h3 class="widget-title">letzter Beitrag</h3>
    <div class="widget">
      <ul>
        
          <li>
            <a href="/myblog/2018/03/19/前后端并行开发-前端模拟数据/">前后端并行开发--前端模拟数据</a>
          </li>
        
          <li>
            <a href="/myblog/2018/03/06/hexo-gitee（码云）搭建我的第一个静态博客/">hexo+gitee（码云）搭建我的第一个静态博客</a>
          </li>
        
          <li>
            <a href="/myblog/2018/03/02/hello-world/">Hello World</a>
          </li>
        
      </ul>
    </div>
  </div>

  
</aside>
        
      </div>
      <footer id="footer">
  
  <div class="outer">
    <div id="footer-info" class="inner">
      &copy; 2018 zifei wang<br>
      Powered by <a href="http://hexo.io/" target="_blank">Hexo</a>
    </div>
  </div>
</footer>
    </div>
    <nav id="mobile-nav">
  
    <a href="/myblog/" class="mobile-nav-link">Home</a>
  
    <a href="/myblog/archives" class="mobile-nav-link">Archives</a>
  
</nav>
    

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>


  <link rel="stylesheet" href="/myblog/fancybox/jquery.fancybox.css">
  <script src="/myblog/fancybox/jquery.fancybox.pack.js"></script>


<script src="/myblog/js/script.js"></script>



  </div>
</body>
</html>